# reward/collect_flag.py
# 负责计算当角色收集旗帜时应获得的奖励

def calculate_reward(flag, character):
    """
    计算当角色收集旗帜时应获得的奖励。

    参数:
        flag: 旗帜对象，包含位置、尺寸等信息
        character: 角色对象，包含位置、尺寸等信息

    返回:
        reward: 如果角色成功收集了旗帜，则返回正值；否则返回0。
    """
    # 判断角色是否已经收集了旗帜
    if flag.collected:
        return 0

    # 简单的矩形碰撞检测：如果角色的矩形和旗帜的矩形重叠，则认为收集成功
    if (character.x < flag.x + flag.width and
            character.x + character.width > flag.x and
            character.y < flag.y + flag.height and
            character.y + character.height > flag.y):
        flag.collected = True  # 标记旗帜为已收集
        return 100  # 收集旗帜后获得的奖励分值

    return 0  # 未收集旗帜，没有奖励